package muhnes.sizoo.dal;

import java.util.List;
import muhnes.sizoo.HibernateUtilSeguridad;
import muhnes.sizoo.modelo.Usuario;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 * Clase que implementa los métodos ddefinidos en UsuarioDao
 * @author Ricardo Orellana
 */
public class UsuarioDaoImpl extends GenericoDAO< Usuario, String > 
                            implements UsuarioDao {
    
    public UsuarioDaoImpl() {
        super( HibernateUtilSeguridad.getSessionFactory() );
    }
    
    @Override
    protected Class<?> getClaseEntidad () {
        return Usuario.class;
    }

    /**
     * Metodo que busca los usuarios que se encuentran activos
     *  
     */
    @Override
    public List<Usuario> buscarUsuariosActivos() {
        Session sesion = fabricaSesion.getCurrentSession();
        String hql = "from Usuario where estado = 'Activo'";
        Query consulta = sesion.createQuery( hql );
        List< Usuario > entidades = consulta.list();
        return entidades;
    }

    /**
     * Método que se encarga de verificar que los usuarion sean unicos
     *  
     */
    @Override
    public boolean verificarUnicidad(Usuario usuario) {
        Session sesion = fabricaSesion.getCurrentSession();        
        String hql = "from Usuario where lower(correousuario) = :correousuario";
        Query consulta = sesion.createQuery( hql );
        consulta.setParameter("correousuario", usuario.getCorreousuario().toLowerCase());
        return consulta.uniqueResult() != null ? true : false;
    }
    
    /**
     * Médodo que se encarga de veridificar la dependencia de los usuarios.
     * 
     */
    @Override
    public boolean verificarDependencia (Usuario entidad) {
        return false;
    }

}
